{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import sys\n",
    "from typing import Collection\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import math\n",
    "import pymongo\n",
    "import torch\n",
    "from torch import nn\n",
    "from bson import ObjectId\n",
    "\n",
    "sys.path.append(\"/gpfs/scratch/chgwang/XI/Scripts/Refactoring_1/getData\")\n",
    "sys.path.append(\"/gpfs/scratch/chgwang/XI/Scripts/Refactoring_1/MLModel\")\n",
    "import FedSeq  # type: ignore\n",
    "import ParallelNet_1d  # type: ignore\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import accuracy_score\n",
    "from tqdm import tqdm\n",
    "\n",
    "matplotlib.use(\"Agg\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "client = pymongo.MongoClient(\"mongodb://127.0.0.1:27017/\")\n",
    "db  = client[\"Power_Fault\"]\n",
    "col_sour = db[\"data_sour\"]\n",
    "col_id = \"6077f616b5804317a682bbd0\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "names = [\"ia\", \"ib\", \"ic\"]\n",
    "data_dict = col_sour.find_one({\"_id\":ObjectId(col_id)})\n",
    "power_data = []\n",
    "for name in names:\n",
    "    power_data.append(data_dict[name])\n",
    "power_data = np.stack(power_data)\n",
    "power_data = power_data.T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = ParallelNet_1d.ParallelNet_1d(output_size=6)\n",
    "model_path = \"/gpfs/scratch/chgwang/XI/DataBase/Model_1d/PN-34-0.974-0.953.pt\"\n",
    "trained_dict = torch.load(model_path, map_location=\"cpu\")   \n",
    "model.load_state_dict(trained_dict, strict=True)\n",
    "input_data = power_data[:200,:]\n",
    "input_data = torch.tensor(input_data)\n",
    "input_data = torch.unsqueeze(input_data, 0)\n",
    "input_data = input_data.permute(0,2,1)\n",
    "input_data = input_data.float()\n",
    "out_data = model(input_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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6+jrv9TYrptt2jBXzEtv8YAxPcbfnX79uNQ7uuTkSeDJJ3nDvfoqrUwDadBA34gf02P83alZk2+ymTP1H5G9/DJrW737LtCwob771pmIVv5t23KpVzBGWhpHkma0v/PIlVfSWa5nbPmePWyyetFFptQbF9HfgF29Gvjf//Tdp9/ExnKyQc9kr5MnGa62dy8rp5oQWta2LY3anBx99rdtG5tWmToB787o0eyDoWf22uzZnAu7/noTqgeGTkQrf62rl14j8i1b+LI3rEesL/r358G/+06f/WVlMVs3J4eTIyYFZE+eTDeDXtSty3lXSxBh85SfftLHwV1QwGHRV19xotekqqFasJJeVVe10ZhlhWhHjmRU3Lff6rO/2bOZ1d2+PSfew4CIVv4tWnCEppdBu2WLxUl7FSowieW77/QZzj7yCJfJybomDfniwAEaynpE/KSlMel1377Q9xU0117LCcZ580Lf1+zZjFF//31mWJuEpvz1Cibbts1CVxxA10/nzqzyGSoFBSyp0b4944otG84ERkQr/6gofV00W7danrFNv392dugm2vbtnNy9/37WWjYRPSN+li9nWYe8vND3FTRdugD16ulTU2byZLqRbrkl9H0FQN26wOOP+92YzSdz5nDgYikDBtAnGGqphwUL+PD/859AuXL6yGYCEa38ARpSd9wR+n4KCphEFGCvDP3ROtWEqmjee49jcj3+OQGi9Y7VYy5m61Y+j5bOvekV8pmczH3cdZexiXweEOG8iV4DwFatiq6zZQwcyFIPofRdUIoT7o0a6eurNAFdlL+IPCoiSkRqu62bKCJbRCRLRIa4re8kIqmuz95y9fK1jM2bgQ8/LKpGHCxlygDffMN5OEu58EJOMoai/NPSOJF47bUmV90isbH8f+qh/LOyOBozWVeeT79+nDzXMs4CJT+facp16jDRzgJyc1kSJVSP4qZNwNtvW1BuozhaqYclS4Lfx4cf8oX8xBOGR1zpTcjKX0QaAxgEYJfbujgAowG0BXApgMkioj1+UwCMA5u6x7o+twwt4idUX6ZZtbv8YtAgZpUGE/KZlweMHctCVG+9pbto/lCuHCNKq1cPfV+bNgXUstY4tJDPYCOxXnyRkSnvvmuZT/m995i9Hur8yS+/sOWDXiHWQVOxIl8AwSr/nBzgwQfZSvWee3QVzQz0sPxfB/AYAHf1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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(nrows=1, ncols=1)\n",
    "axes.plot(power_data[:,0], \"r-\", power_data[:,1], \"b--\", label=(\"a\", \"b\"))\n",
    "axes.legend()\n",
    "fig"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([6.92625189e-310, 6.92625663e-310, 0.00000000e+000, 0.00000000e+000,\n",
       "       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,\n",
       "       0.00000000e+000, 0.00000000e+000])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.empty(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in range(0):\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# First create some toy data:\n",
    "x = np.linspace(0, 2*np.pi, 400)\n",
    "y = np.sin(x**2)\n",
    "\n",
    "# Create just a figure and only one subplot\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(x, y)\n",
    "ax.set_title('Simple plot')\n",
    "\n",
    "# Create two subplots and unpack the output array immediately\n",
    "f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)\n",
    "ax1.plot(x, y)\n",
    "ax1.set_title('Sharing Y axis')\n",
    "ax2.scatter(x, y)\n",
    "\n",
    "# Create four polar axes and access them through the returned array\n",
    "fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection=\"polar\"))\n",
    "axs[0, 0].plot(x, y)\n",
    "axs[1, 1].scatter(x, y)\n",
    "\n",
    "# Share a X axis with each column of subplots\n",
    "plt.subplots(2, 2, sharex='col')\n",
    "\n",
    "# Share a Y axis with each row of subplots\n",
    "plt.subplots(2, 2, sharey='row')\n",
    "\n",
    "# Share both X and Y axes with all subplots\n",
    "plt.subplots(2, 2, sharex='all', sharey='all')\n",
    "\n",
    "# Note that this is the same as\n",
    "plt.subplots(2, 2, sharex=True, sharey=True)\n",
    "\n",
    "# Create figure number 10 with a single subplot\n",
    "# and clears it if it already exists.\n",
    "fig, ax = plt.subplots(num=10, clear=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['12', '15', '23']"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted([\"12\",\"23\", \"15\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.9.2 64-bit ('torch': conda)",
   "language": "python",
   "name": "python392jvsc74a57bd06664af4bf9187549bcebbb9a6f4160178b4de433dfe26d5bcabae51534f2d85d"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.2"
  },
  "metadata": {
   "interpreter": {
    "hash": "6664af4bf9187549bcebbb9a6f4160178b4de433dfe26d5bcabae51534f2d85d"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
